﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Windows.Forms;
using System.Xml;

namespace Gerencial_Fisio_Nutry.NotaInterna
{
    using Gerencial_Fisio_Nutry.Banco;
    public class MetodoInterno
    {

        public XmlDocument gerarXmlInterno(Conjunto interno)
        {
            string tudo = "<conjunto><notaLida>false</notaLida>";
            int cont = 1;
            
            foreach(Conjunto.itemInterno inter in   interno.itensInterno  ){            
            string item =
              "<itemInterno nItem=" + char.ConvertFromUtf32(34) + (cont++) + char.ConvertFromUtf32(34) + ">"
                + "<codigo>" + inter.cod_produto +"</codigo>"
                + "<unidade>" + inter.unidade + "</unidade>"
                + "<quantidade>" + inter.quantidade + "</quantidade>"
                + "<segmento>" + inter.segmento + "</segmento>"
                + "<CFOP>" + inter.CFOP + "</CFOP>"
                + "<NCM>" + inter.NCM + "</NCM>"
                + "<descricao>" + inter.descricao + "</descricao>"
                + "<referencia>" + inter.referencia + "</referencia>"
                + "<precoSaida>" + inter.precoSaida + "</precoSaida>"
                +"<desconto>"+inter.descontoLimite+"</desconto>";
            #region notas
            int con = 1;
            for(int k = 0 ; k < inter.notas.Count;k++){
                #region ide
                string ide =
                        "<ide>"
                         + "<nNF>" + inter.notas[k].nnf + "</nNF>"
                         + "<id>" + inter.notas[k].id + "</id>"
                         + "<cDV>" + inter.notas[k].cdv + "</cDV>"
                         + "<cMunFG>" + inter.notas[k].cmunfg + "</cMunFG>"
                         + "<cNF>" + inter.notas[k].cnf + "</cNF>"
                         + "<cUF>" + inter.notas[k].cuf + "</cUF>"
                         + "<dEmi>" + inter.notas[k].demi.ToShortDateString() + "</dEmi>"
                         + "<dSaiEnt>" + inter.notas[k].dsaient.ToShortDateString() + "</dSaiEnt>"
                         + "<finNFe>" + inter.notas[k].finnfe + "</finNFe>"
                         + "<indPag>" + inter.notas[k].indpag + "</indPag>"
                         + "<mod>" + inter.notas[k].mod + "</mod>"
                         + "<natOp>" + inter.notas[k].natop + "</natOp>"
                         + "<nfat>" + inter.notas[k].nfat + "</nfat>"
                         + "<procEmi>" + inter.notas[k].procemi + "</procEmi>"
                         + "<serie>" + inter.notas[k].serie + "</serie>"
                         + "<tpAmb>" + inter.notas[k].tpamb + "</tpAmb>"
                         + "<tpEmis>" + inter.notas[k].tpemis + "</tpEmis>"
                         + "<tpImp>" + inter.notas[k].tpimp + "</tpImp>"
                         + "<tpNF>" + inter.notas[k].tpnf + "</tpNF>"
                         + "<vBC>" + inter.notas[k].vBC + "</vBC>"
                         + "<vBCST>" + inter.notas[k].vBCST + "</vBCST>"
                         + "<vCOFINS>" + inter.notas[k].vCOFINS + "</vCOFINS>"
                         + "<vDesc>" + inter.notas[k].vDesc + "</vDesc>"
                         + "<verproc>" + inter.notas[k].verproc + "</verproc>"
                         + "<vFrete>" + inter.notas[k].vFrete + "</vFrete>"
                         + "<vICMS>" + inter.notas[k].vICMS + "</vICMS>"
                         + "<vII>" + inter.notas[k].vII + "</vII>"
                         + "<vIPI>" + inter.notas[k].vIPI + "</vIPI>"
                         + "<vliq>" + inter.notas[k].vliq + "</vliq>"
                         + "<vNF>" + inter.notas[k].vNF + "</vNF>"
                         + "<vorig>" + inter.notas[k].vorig + "</vorig>"
                         + "<vOutro>" + inter.notas[k].vOutro + "</vOutro>"
                         + "<vPIS>" + inter.notas[k].vPIS + "</vPIS>"
                         + "<vProd>" + inter.notas[k].vProd + "</vProd>"
                         + "<vSeg>" + inter.notas[k].vSeg + "</vSeg>"
                         + "<vST>" + inter.notas[k].vST + "</vST>"
                        + "</ide>";
                #endregion           
                #region endereco
                string endereco =
                     "<enderEmit>"
                    + "<xLgr>"+inter.notas[k].fornec.enderEmit1.xLgr+"</xLgr>"
                    + "<nro>" + inter.notas[k].fornec.enderEmit1.nro + "</nro>"
                    + "<xBairro>" + inter.notas[k].fornec.enderEmit1.xBairro + "</xBairro>"
                    + "<cMun>" + inter.notas[k].fornec.enderEmit1.cMun + "</cMun>"
                    + "<xMun>" + inter.notas[k].fornec.enderEmit1.xMun + "</xMun>"
                    + "<UF>" + inter.notas[k].fornec.enderEmit1.UF + "</UF>"
                    + "<CEP>" + inter.notas[k].fornec.enderEmit1.CEP + "</CEP>"
                    + "<cPais>" + inter.notas[k].fornec.enderEmit1.cPais + "</cPais>"
                    + "<xPais>" + inter.notas[k].fornec.enderEmit1.xPais + "</xPais>"
                    + "<fone>" + inter.notas[k].fornec.enderEmit1.fone + "</fone>"
                    + "</enderEmit>";
                string emit =
                     "<emit>"
                        + "<CNPJ>" + inter.notas[k].fornec.CNPJ + "</CNPJ>"
                        + "<xNome>" + inter.notas[k].fornec.xNome + "</xNome>"
                        + "<xFant>" + inter.notas[k].fornec.xFant + "</xFant>"
                        + "<IE>" + inter.notas[k].fornec.IE + "</IE>"
                        + "<CRT>" + inter.notas[k].fornec.CRT + "</CRT>"
                        + endereco
                    + "</emit>";
                #endregion 
     
                string notaInterna =
                 "<notaInterna nNota=" + char.ConvertFromUtf32(34) + (con++) + char.ConvertFromUtf32(34) + ">"
               + "<quantidadeNota>" + inter.notas[k].quantidadeNota + "</quantidadeNota>"
               + "<valorCompra>" + inter.notas[k].valorCompra + "</valorCompra>"
               + "<dataValidade>" + inter.notas[k].datavalidade.ToShortDateString() + "</dataValidade>"
               + ide
               + emit
               + "</notaInterna>";
               item += notaInterna;
            }
            item+= "</itemInterno>";
            tudo += item;
            #endregion
            }
            tudo += "</conjunto>";

            string arquivo = Application.StartupPath.ToString() + @"\NotaInterna\nota"+DateTime.Now.ToShortDateString()+"-"+
                DateTime.Now.ToShortTimeString()+".xml";
            arquivo = @"d:\notinha.xml";
            if (System.IO.File.Exists(arquivo))
                System.IO.File.Delete(arquivo);
            System.Xml.XmlDocument xml = new System.Xml.XmlDocument();

            xml.LoadXml(tudo);
            xml.Save(arquivo);
            return xml;
        //    MessageBox.Show("Ocorreu um Erro para Gerar o Arquivo", "Titan Desenvolvimento");
         //   return null;
         

        }
        public Conjunto entradaInterna(XmlDocument interno)
        {
            Conjunto conjunto = new Conjunto();

            XmlNodeList xnList7 = interno.GetElementsByTagName("itemInterno");
            foreach (XmlNode node in xnList7)
            {
                Conjunto.itemInterno its = new Conjunto.itemInterno();
                its.cod_produto = Convert.ToInt32(node["codigo"].InnerText);
                its.CFOP = int.Parse(node["CFOP"].InnerText);
                its.descontoLimite = double.Parse(node["desconto"].InnerText.Replace('.', ','));
                its.descricao = node["descricao"].InnerText;
                its.NCM = (node["NCM"].InnerText);
                its.precoSaida = double.Parse(node["precoSaida"].InnerText.Replace('.', ','));
                #region prod
                foreach (XmlNode nod in node)
                {
                    if (nod.Name == "notaInterna")
                    {
                        Conjunto.itemInterno.NotaInterna nota = new Conjunto.itemInterno.NotaInterna();
      
                        nota.quantidadeNota = double.Parse(nod["quantidadeNota"].InnerText.Replace('.', ','));
                        nota.valorCompra = double.Parse(nod["valorCompra"].InnerText.Replace('.', ','));
                        nota.datavalidade = Convert.ToDateTime(nod["dataValidade"].InnerText);
                        nota.fornec = new Nota.FornecedorNota();
                        #region emit Mais Ide
                        foreach (XmlNode nnn in nod)
                        {
                            if (nnn.Name == "emit")
                            {
                                nota.fornec.CNPJ = (nnn["CNPJ"].InnerText);
                                nota.fornec.CRT = int.Parse(nnn["CRT"].InnerText);
                                nota.fornec.IE = (nnn["IE"].InnerText);
                                nota.fornec.xFant = (nnn["xFant"].InnerText);
                                nota.fornec.xNome = (nnn["xNome"].InnerText);
                                nota.fornec.enderEmit1 = new Nota.FornecedorNota.enderEmit();
                                foreach (XmlNode noo in nnn)
                                {
                                    #region enderEmit
                                    if (noo.Name == "enderEmit")
                                    {
                                        nota.fornec.enderEmit1.xLgr = noo["xLgr"].InnerText;
                                        nota.fornec.enderEmit1.nro = noo["nro"].InnerText;
                                        nota.fornec.enderEmit1.xBairro = noo["xBairro"].InnerText;
                                        nota.fornec.enderEmit1.cMun = noo["cMun"].InnerText;
                                        nota.fornec.enderEmit1.xMun = noo["xMun"].InnerText;
                                        nota.fornec.enderEmit1.UF = noo["UF"].InnerText;
                                        nota.fornec.enderEmit1.CEP = noo["CEP"].InnerText;
                                        nota.fornec.enderEmit1.xPais = noo["xPais"].InnerText;
                                        nota.fornec.enderEmit1.fone = noo["fone"].InnerText;
                                        nota.fornec.enderEmit1.cPais = int.Parse(noo["cPais"].InnerText);
                                    }
                                    #endregion
                                }
                            }
                            if (nnn.Name == "ide")
                            {
                                #region info da nota
                                nota.nnf = int.Parse(nnn["nNF"].InnerText);
                                nota.cdv = int.Parse(nnn["cDV"].InnerText);
                                nota.cmunfg = (nnn["cMunFG"].InnerText);
                                nota.cnf = (nnn["cNF"].InnerText);
                                nota.cuf = int.Parse(nnn["cUF"].InnerText);
                                nota.demi = DateTime.Parse(nnn["dEmi"].InnerText);
                                nota.dsaient = DateTime.Parse(nnn["dSaiEnt"].InnerText);
                                nota.finnfe = int.Parse(nnn["finNFe"].InnerText);
                                nota.id = (nnn["id"].InnerText);
                                nota.indpag = int.Parse(nnn["indPag"].InnerText);
                                nota.mod = int.Parse(nnn["mod"].InnerText);
                                nota.natop = (nnn["natOp"].InnerText);
                                nota.nfat = int.Parse(nnn["nfat"].InnerText);
                                nota.procemi = int.Parse(nnn["procEmi"].InnerText);
                                nota.serie = int.Parse(nnn["serie"].InnerText);
                                nota.tpamb = int.Parse(nnn["tpAmb"].InnerText);
                                nota.tpemis = int.Parse(nnn["tpEmis"].InnerText);
                                nota.tpimp = int.Parse(nnn["tpImp"].InnerText);
                                nota.tpnf = int.Parse(nnn["tpNF"].InnerText);
                                nota.vBC = double.Parse(nnn["vBC"].InnerText.Replace('.', ','));
                                nota.vICMS = double.Parse(nnn["vICMS"].InnerText.Replace('.', ','));
                                nota.vBCST = double.Parse(nnn["vBCST"].InnerText.Replace('.', ','));
                                nota.vST = double.Parse(nnn["vST"].InnerText.Replace('.', ','));
                                nota.vProd = double.Parse(nnn["vProd"].InnerText.Replace('.', ','));
                                nota.vFrete = double.Parse(nnn["vFrete"].InnerText.Replace('.', ','));
                                nota.vSeg = double.Parse(nnn["vSeg"].InnerText.Replace('.', ','));
                                nota.vDesc = double.Parse(nnn["vDesc"].InnerText.Replace('.', ','));
                                nota.vII = double.Parse(nnn["vII"].InnerText.Replace('.', ','));
                                nota.vIPI = double.Parse(nnn["vIPI"].InnerText.Replace('.', ','));
                                nota.vPIS = double.Parse(nnn["vPIS"].InnerText.Replace('.', ','));
                                nota.vCOFINS = double.Parse(nnn["vCOFINS"].InnerText.Replace('.', ','));
                                nota.vOutro = double.Parse(nnn["vOutro"].InnerText.Replace('.', ','));
                                nota.vNF = double.Parse(nnn["vNF"].InnerText.Replace('.', ','));
                                    #endregion
                                
                            }
                        }
                        #endregion
                        its.notas.Add(nota); 
                    }
                #endregion
                }
                conjunto.itensInterno.Add(its);
                //transforma um XML em Conjunto para ir para o metodo EntradaDeConjunto
            }
                return conjunto;
            

        }
   
    }
}
